// via: typescript-type-level-programming
// typescript 值空间和类型空间。
// # 类型空间，type platform
// - 类型在类型空间中，是无副作用的

type AnyRecord = {
  toString(): string;
};

type CheckNumber = any extends number ? 1 : 0;
//         ^?
type FnCase = { (): {} & [] };
//      ^?

/// 元组类型会在推导路径中确认，而最终得到确切的元组元数据如 length
type Length<T extends { length: number }> = T['length'];
type p = Length<[1, 3, 3]>;
//   ^?
// 在编译期通过类型检查器的类型检查被执行，执行规则由类型检查器所隐式表示的定型规则定义。承担了 Typescript 的静态语义。

// 值空间基本等同于JavaScript 中的成分，也有typescript特有的部分：enum， namespace
